function TestCtrl($scope) {

  $scope.buildWidget = function() {
    $scope.widget = {
      general_messages: DEFAULT_ERROR_MESSAGES,
      vocabulary: BASE_VOCABULARY
    };

    var attempt = buildControlFunctionTable(DEFAULT_CONTROL_FUNCTION_STRINGS);
    if (attempt.hasOwnProperty('failure')) {
      return 'Failed to build Control Functions';
    }
    $scope.widget.control_language = attempt.language;
    $scope.widget.control_model = attempt.model;

    $scope.widget.mistake_table = [0, 0, 0, 0];
    $scope.widget.mistake_table[0] = buildMistakeSection(
      'layout', DEFAULT_LAYOUT_MISTAKE_STRINGS, $scope.widget.control_language, DEFAULT_ERROR_MESSAGES);
    $scope.widget.mistake_table[1] = buildMistakeSection(
      'variables', DEFAULT_VARIABLE_MISTAKE_STRINGS, $scope.widget.control_language, DEFAULT_ERROR_MESSAGES);
    $scope.widget.mistake_table[2] = buildMistakeSection(
      'logic', DEFAULT_LOGIC_MISTAKE_STRINGS, $scope.widget.control_language, DEFAULT_ERROR_MESSAGES);
    $scope.widget.mistake_table[3] = buildMistakeSection(
      'target', DEFAULT_TARGET_MISTAKE_STRINGS, $scope.widget.control_language, DEFAULT_ERROR_MESSAGES);
    for (var i=0; i<4; i++) {
      if ($scope.widget.mistake_table[i].hasOwnProperty('failure')) {
        return 'Failed to build Mistake Table';
      }
    }

    $scope.widget.line_templates = buildLineTemplateTable(
      DEFAULT_LINE_TEMPLATE_STRINGS, BASE_STUDENT_LANGUAGE, BASE_VOCABULARY, DEFAULT_ERROR_MESSAGES);
    if ($scope.widget.line_templates.hasOwnProperty('failure')) {
      return 'Failed to build Line Templates';
    }

    return '';
  }
  $scope.startingFailure = $scope.buildWidget();

  // TODO: build question before testing
} 


